package com.xzzz.backend.bsms.server.rbac.sys.dict.name;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

/**
 * 字典字段序列化方式
 */
public class DictNameSerializer extends JsonSerializer<Object> {

    private final DictCache dictCache;

    /**
     * 类中的每个字段一个序列化方式, 一个字典值在运行期间不会改变字典所属的 groupId, 所以共用属性也是线程安全的。
     */
    private final String groupId;

    public DictNameSerializer(DictCache dictCache, String groupId) {
        this.dictCache = dictCache;
        this.groupId = groupId;
    }

    @Override
    public void serialize(Object s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (s == null) {
            jsonGenerator.writeObject("");
            return;
        }
        String dictCid = s.toString();
        String value = dictCache.getDictName(groupId, dictCid);
        jsonGenerator.writeObject(value);
    }
}
